package main

import (
	"context"
	"google.golang.org/grpc"
	"grpc-demo/simple/proto"
	"log"
	"net"
)

// GreeterServer is the server API for Greeter service.
// 定义服务名
type GreeterService struct {
	proto.UnimplementedGreeterServer
}

// 实现了proto文件中定义的SayHello()方法，给client端调用
func (s *GreeterService) SayHello(ctx context.Context, req *proto.HelloRequest) (*proto.HelloResponse, error) {
	return &proto.HelloResponse{Result: "hello " + req.Name}, nil
}

func main() {
	// 监听本地端口
	listener, err := net.Listen("tcp", ":50051")
	if err != nil {
		log.Fatal(err)
	}

	// 初始化grpc服务器
	g := grpc.NewServer()

	// 在grpc服务器中注册我们的服务
	proto.RegisterGreeterServer(g, &GreeterService{})

	//用服务器 Serve() 方法以及我们的端口信息区实现阻塞等待，直到进程被杀死或者 Stop() 被调用
	err = g.Serve(listener)
	if err != nil {
		log.Fatal(err)
	}
}
